/******************************************************************************************
 *****                              File Description Table                              ***
 ******************************************************************************************
 *                                                                                        *
 *               File Name          :   sys_type_define.c                              *
 *                                                                                        *
 *               Author             :   cxm                                               *
 *                                                                                        *
 *               Creation Date      :   2025/03/18                                        *
 *                                                                                        *
 *               Last Modifief Date :   2025/03/18                                        *
 *                                                                                        *
 *----------------------------------------------------------------------------------------*
 * Description: 
 * 1. 应用层配置参数  
 *========================================================================================*/

#ifndef _SYS_CONFIG_H
#define _SYS_CONFIG_H                                                                                            
                                                                                          
/******************************************************************************************
*                                 头 文 件 引 用                             
*========================================================================================*/
#include "sys_type_define.h"                                                                   
                                                       
/******************************************************************************************
*                              工 程 相 关 宏 配 置                             
*========================================================================================*/

/* printf 配置: 若禁用printf，注释掉即可 */    
#define SYS_USE_PRINTF                                                               
                                                       
/******************************************************************************************
*                              信 息 输 出 等 级 配 置                         
*========================================================================================*/
#if defined( SYS_USE_PRINTF )     
    
    /* 信息输出等级 */
    #define SYS_PRINTF_LEVEL_ERROR  ( 1 )
    #define SYS_PRINTF_LEVEL_WARN   ( 2 )
    #define SYS_PRINTF_LEVEL_INFO   ( 3 )
    #define SYS_PRINTF_LEVEL_DEBG   ( 4 )

    /* 根据需求配置该宏 */
    #define SYS_PRINT_LEVEL         ( SYS_PRINTF_LEVEL_DEBG )

    /** 
     * @brief: 输出错误信息
     * 
     */
    #define SYS_LOG_ERROR(...)                                                  \
        do                                                                      \
        {                                                                       \
            if(SYS_PRINT_LEVEL >= SYS_PRINTF_LEVEL_ERROR)                       \
            {                                                                   \
                printf("File: \"%s\" Func:\"%s\" Line:%d [ERR/SYS]: ", __FILE__, __func__, __LINE__);   \
                printf(__VA_ARGS__);                                            \
                printf("\r\n");                                                 \
            }                                                                   \
        } while (0)                                                             

    /** 
     * @brief: 输出告警信息
     * 
     */
    #define SYS_LOG_WARN(...)                                                   \
        do                                                                      \
        {                                                                       \
            if(SYS_PRINT_LEVEL >= SYS_PRINTF_LEVEL_ERROR)                       \
            {                                                                   \
                printf("File: \"%s\" Func:\"%s\" Line:%d [WARN/SYS]: ", __FILE__, __func__, __LINE__);   \
                printf(__VA_ARGS__);                                            \
                printf("\r\n");                                                 \
            }                                                                   \
        } while (0)  
        
    /** 
     * @brief: 输出普通信息
     * 
     */
    #define SYS_LOG_INFO(...)                                                   \
        do                                                                      \
        {                                                                       \
            if(SYS_PRINT_LEVEL >= SYS_PRINTF_LEVEL_ERROR)                       \
            {                                                                   \
                printf("File: \"%s\" Func:\"%s\" Line:%d [INFO/SYS]: ", __FILE__, __func__, __LINE__);   \
                printf(__VA_ARGS__);                                            \
                printf("\r\n");                                                 \
            }                                                                   \
        } while (0)  

    /** 
     * @brief: 输出调试信息
     * 
     */
    #define SYS_LOG_DEBG(...)                                                   \
        do                                                                      \
        {                                                                       \
            if(SYS_PRINT_LEVEL >= SYS_PRINTF_LEVEL_ERROR)                       \
            {                                                                   \
                printf("File: \"%s\" Func:\"%s\" Line:%d [DEBG/SYS]: ", __FILE__, __func__, __LINE__);   \
                printf(__VA_ARGS__);                                            \
                printf("\r\n");                                                 \
            }                                                                   \
        } while (0)  
                                                       
#endif  // SYS_USE_PRINTF

#endif  // _SYS_CONFIG_H